package com.yunxi.dao.otd;

import com.yunxi.core.dao.BaseMapperPlus;
import com.yunxi.model.otd.OtdOrderSo;
import java.util.Date;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.annotations.Param;

/**
 * <p>
 * SO生产订单 Mapper 接口
 * </p>
 *
 * @author XUQI
 * @since 2019-07-03
 */
public interface OtdOrderSoMapper extends BaseMapperPlus<OtdOrderSo> {

    /**
     * SO订单排程查询
     *
     * @param map 查询条件
     * @return List<Map < String, Object>>
     */
    List<Map<String, Object>> findSoOrderSchedule(Map<String, Object> map);

    /**
     *  SO订单排程总行数
     * @param map 查询条件
     * @return 行数
     */
    int findSoOrderScheduleCount(Map<String, Object> map);

    /**
     * 查询待发送SO排产订单
     *
     * @param orderType 订单类型
     * @param startDate 需求开始时间
     * @param endDate 需求结束时间
     * @return List<OtdOrderSo>
     */
    List<OtdOrderSo> findSendOrderSo(@Param("orderType") String orderType, @Param("startDate") Date startDate,
        @Param("endDate") Date endDate);


    /**
     * 删除指定日期指定数量的SO需求
     *
     * @param demandDate 需求日期
     * @param productCode 产品编码
     * @param customPackCode 选装包编码
     * @param works 工厂
     * @param orderType 订单类型
     */
    void deleteOverSoOrderByDay(@Param("demandDate") Date demandDate, @Param("productCode") String productCode,
        @Param("customPackCode") String customPackCode, @Param("works") String works,
        @Param("orderType") String orderType, @Param("num") int num);

}
